Потому что вы блокируете мультишот. Запрет спеллбука не запрещает способности, находящиеся в нем. Но запрет самих способностей, внезапно, запрещает их.
отменять постройку юнита если технология уже ап
либо как сразу говорили через ап здания
где каждому твоему зданию будет соответствовать такое же здание но с дополнительным слотом
с продажей юнита открываешь доту и смотришь как там сделан спелл передать предметы у куры
он сделан как раз через продажу юнита
иначе никак
если не нравится пожалуйся богу об этом
или близардам
пусть выпустят новый патч специально для тебя
Maxsavin, молодые, зеленые, все то вам объяснять надо.
Берете карту, делаете копию, вычищаете из неё триггер за триггером, юнита за юнитом, кусочек карты за кусочком, пока либо не пройдет баг, либо в карте не останется ничего, что бы вы не были готовы показать. Да, проверять надо после каждого удаления, а не удалять все скопом. Да, это долго, но другого способа нет.
В первом случае (баг прошел после очередного удаления) - причина найдена и можно детально исследовать.
Во втором случае (удален весь "секретный" контент, а баг остался) - можно смело показывать карту и просить помощи.
P.S. главное не забыть, что удалять надо из копии карты, а не из единственного существующего исходника. Ответственности за потерю единственной рабочей версии в результате неправильного использования этого метода не несу.
Ищи методом исключения - выключил часть триггеров, нет зависания - значит дело в них. Кстати такая была проблема в footman, но затем она прошла сама собой.
А что мешает поставить время жизни 0 сек, тогда у него не будет таймера жизни и он не помрет по истечению времени.
Используя событие - юнит призвал юнита, можно установить желаемое время жизни призванного юнита.
это понятно, лучше на изображение показать как это делать а то я в недоумение
решил вопрос...не надо еще один диалог создать достаточно кнопку, после показа skip с названием предмета в инвентаре я присвоил другую переменную Button2 [Integer A] и точно также с другим, и в отдельном триггере проверяю на какую кнопку я потыкал и даю этот предмет складу и наоборот циклом от 1 до 6. спасибо.
Я решил это через отслеживание начала заклинания, после чего ставил юнита на паузу на 20 сек с проигрыванием анимации. т.е. способность не завершалась, но выгляедло это так, как будто она завершилась
Нашёл решение для тебя.
Пол-ночи провозился, но нашёл. почему-то это стало делом чести - открыть сию карту в редакторе
В общем, берёшь архив из аттача и тупо суёшь папку UI в корень варкрафта. После этого карта будет открываться любым вариантом редактора - как JNGP (любым), так и (даже!) стандартным.
Важно: локальные файлы должны быть разрешены.
Только там такой срач и дичь, что лучше реально своими руками с нуля писать...
JNGP снимает ограничения (например максимум декорации 20к), если обычным редактором открыть критует. В jngp есть новые гуишные функции, которых нет в обычном, стандартный редактор их не распознает. Юзайте поиск, такой вопрос уже задавали
Там есть для Игрока (или Игры) действие Force UI Key. Назначаешь горячую клавишу книге и при событии выбора указываешь в этом действии свою клавишу.
Только событие выбора может реагировать с небольшой задержкой, достаточной, чтобы рассмотреть кнопки на панели приказов. Если это надо обойти, есть два варианта:
периодическим таймером на 0.03 секунды проверять, выбран ли юнит;
сделать два одинаковых типа юнитов, один из которых с классификацией страж, при выборе стража накладывать морф и открывать книгу (может потребоваться задержка), при снятии выбора накладывать обратный морф. Статья про морфы есть у quq_CCCP.
Нужна переменная, в которой хранить уже добавленное золото, чтобы не добавлять лишнего - изначально 0.
Каждые х сек, вычислять разницу между "Золота добыто" и этой переменной. Затем разницу добавлять к переменной и к золоту игрока.
Т.е. если триггер сработает после первых 5-и рабов, то даст 50 золотых.
Затем если перед следующим срабатыванием еще 2 раба принесут по 10 золота, то "Золото добыто" станет 70, а в переменной у нас 50 - триггер добавит еще 20 золота.
Пока нет желания разбираться, что у тебя так, а что не так. Но вижу, что переменная Window не назначена окну, а ещё как бы создаются в цикле одновременно 10 окон, которые потом все одновременно ждут 50 секунд. Вот скрин действий триггера вместо двух твоих, секунда ожидания поставлена для того, чтобы увидеть пропадание окна таймера.
Нади бесполезный оригинальный уберсплат, которого в твоей карте не будет, поставь у своего строения его, а свою текстуру импортируй по пути этого уберсплата. Это сработает 100%.
Во-вторых, если пробовать, то пробовать так.
Вытащить из War3Patch.mpq Splats/UberSplatData.slk.
Правильно добавить/заменить уберсплат туда.
Имортировать отредактированный файл в карту по пути Splats/UberSplatData.slk.
Импортировать текстуру по пути, что указан в UberSplatData.slk.
В РО через Shift+Enter прописать имя (4 латинские буквы) нужного уберсплата.
Сделал, как написал, всё работает.
Даже в редакторе видно. Возможно будет видно только после запуска карты через проверку.
раскрыть
Главное, всё верно сделать. Перед установкой кастомного уберсплата рекомендую сохранять карту. Если имя указано неверно и меняемые строения расставлены на карте, редактор закроется. Тоже самое будет при попытке поставить строение с неверно указанным уберсплатом.
Эти лаги происходят из-за всех триггеров в категории "Блокировка"
Т.к. там периодические события которые и приводят к лагам Приступаю к решению
Проблема решена
Проблема решена путем избавления от периодических событий
Т.е. я поставил происходящее событие"Юнит умирает" с проверкой "все ли юниты у игрока n умерли?" и если да то происходит запрет на подготовку юнита (например шаман) Если не понятно: Вот починенная карта
Близы вроде что-то свистели про то что исправят аж в 1.29 но что-то я не заметил каких-либо фиксов,тобишь сделать их "более умными","оптимизировать" "Приучать к нестандартным воинам" всего этого не было.И навряд-ли появится в следующем патче,если только бунт какой-нибудь не устроить.
Они столько багов наделали,что патч наоборот ухудшает игру.Впринципе триггерно можно их сделать без фризов и прочих тормозов,просто ИИ криво перенесли на новые патчи (Это моя догадка) поэтому и лагает
The Dude, это несерьезно. Все вопросы описаны в большом количестве статей здесь, на нашем сайте - xgm.guru/p/wc3/articles. То, что перечисляешь не верх мастерства WE, а базовые знания. Материалов предостаточно. Успехов в обучении.
ZeroCaty:
Окей. Я понял, у тебя всё по дефолту. Я имел в виду параметры, которые влияют на то, где, как и когда ИИ строит здание. Немного наврал, там не тип использования, там тип расположения.
Ethernet:
masias3:
> bOrissko:
> > Создай переменную типа integer, отлавливай применение способности и далее присваивай переменной integer рандомное число 1 до 3, ну а дальше если integer ровно 1, то создать такого юнита и т.д.
> > P.s: так же не забудь отключить "Фиксированный разброс" в Параметрах.
> Не помогло.
Триггер в студию
Почти правильно, только к переменной MercRandom присваивается случайное число только 1 раз при загрузке карты и больше не изменяется. Если у тебя только два триггера, которые на данный момент работают, то если при загрузке карты MercRandom выпало число 2 или 3, то второй триггер работать, конечно же, не будет.
Как вариант добавить в конец каждого триггера присваивание к переменной случайное число, т.е. при кажой покупке будет задаваться новое число от 1 до 3
На самом деле все можно упростить и использовать массив
и все завернуть в 1 триггер
Я попробовал в каждый запихнуть не получилось
Триггер с инициализацией не надо было отключать, так как по умолчанию значение переменной 0, а не 1-3
Без твоих условий, но думаю все понятно.
Да, можно триггерно добавлять и убирать существ на рынок. Нужно два триггера, первый будет через определённое время добавлять в продажу юнитов и через какое-то убирать, второй будет убирать юнита при покупке. Вроде бы в категории Нейтральное здание нужные действия.
Aws, тогда мой вариант тебе идеально подходит, осталось решить какой необратимый хеш одновременно достаточно хорош и не слишком сложен в реализации. Я помню кто-то даже md5 на jass выкладывал тут на xgm, но, имхо, это изврат.
Принцип примерно такой:
игрок вводит команду вида "-code qwerty", где code это или универсальное ключевое слово для ввода кодов или уникальное для каждого кода, в зависимости от реализации, а qwerty это ключевое слово для конкретного кода
триггер отлавливает ввод первого ключевого слова "-code" и выделяет из строки второе ключевое слово "qwerty"
ключевое слово "qwerty" прогоняется через необратимую хеш-функцию и превращается в хеш "123456"
хеш "123456" сравнивается с записаным в карте хешем, циклом если команда "-сode" универсальная, или напрямую если у каждого кода есть своя команда
если хеш совпал, то выдаем плюшки, ну а если нет, то шлем нах
при попытке вскрыть карту кулхацкер обнаружит только "-code" и "123456", но не "qwerty", а значит не сможет правильно ввести команду в официальной версии карты
наличие алгоритма хеширования в карте не спасает кулхацкера т.к. алгоритм необоратимый и не может из "123456" получить "qwerty"
кулхацкер может поробовать подобрать ключевое слово, хеш которого совпадет с "123456", но если функция хеширования достаточно хороша, то он скорее начнет рвать волосы на жопе и визжа кататься по полу, чем у него это получится
Жаль мы в 2019 не догадались, можно добавить RemoveLocation в триггердата вот этим методом, тогда бы не пришлось удалить/ конверить гуи триггеры, чтобы карту запустить в редакторе рефорджа
Читал новое пользовательские соглашение? Потом разжевывали на одной из тем по патчам рефорджа. Близзарды перестраховались, и теперь низя в карту контент пихать, который не твой или свободно распростроняемый, в противном случае хоть 1 жалоба на твою карту - бан, любой мудак которому че-то не понравится может написать близардам, они не будут разбираться он хозяин контента или нет.
Правообладатели нарут и прочих аниме прав тебе никогда не дадут, даже разговаривать не будут, только юр. Лицаи только много денег, бомжи вроде нас с тобой им не интересны. Но при этом за спасибо тебе никто не даст прав делать карту в которой все бы бесплатно играли.
Полноценной блокировки карт никогда не существовало. Это функционал который может предоставить только разработчик самого Warcraft.
Можно усложнить процесс доступа к карте, превращая содержимое в нечитабельную человеческим глазом мешанину, например, тулзой W3Protect.
Но как у тебя есть деньги чтобы нанять редактора, так и у кого-нибудь другого могут найтись деньги для найма другого редактора, который внесет изменения независимо от степени "защиты".
питон всегда хорош, особенно в случае варкрафта, где ваш код может вдохновить юного падавана изучать языки программирования. Я вот вообще не лезу совмещать вар3 и ЯП, потому что это не для меня. Молодцом, стоит выкладывать, когда хромота кода пропадет)
Да хз, у нас же на сайте никакой инфы по луа нет, всё на хайве лежит, зачем что-то искать. тык
Конкретно по луча инфы много не нужно тык и тык
Все функции по вару интуитивно понятные из своего названия или по принципу "мы это знали 15 лет, ещё со времен гуи и объяснение довольно не нужно".
Вот LuaSDK
Вот для примера
---@param whichUnit unit
---@param order string
---@param x real
---@param y real
---@return boolean
function IssuePointOrder(whichUnit, order, x, y) end -- (native)
Функция берёт 4 параметра и возвращает булевую в случае успеха
whichUnit - ссылка на реально существующего юнита
order - имя доступных приказов, в текстовом виде, что можно отдать юниту, есть общие приказы типа атака или движение, или уникальные, которые зашиты во внутрь способностей, ГУИ чем хорош был в своё время для освоения всего это, он помогал подставлять необходимые данные совпадающие, поэтому даже первоклассник мог делать карты, ну и ХУ - координаты мирового пространство, можно получить хоть от курсора хоть от позиции юнита хоть от дерева или камня. Таким образом этого кода
local peasant=создаём юнита своей функцией
IssuePointOrder(peasant,"move",0,0)
хватит чтобы созданный юнит пошёл в центр карты.
Если же всё таки есть опыт в джассе, то там из нового почти ничего не меняется, хештаблица или структуры заменяются на таблицы луа, и появляются анонимные функции (кложуры) это в 1000 раз облегчает кодинг в вар3. Но надо на джассе уметь чуть кодить и понимать сам варкрафт, просто так сюда не ворваться. Всё остальное по API варкрафта для JASS есть на этом сайте, и оно всё точно также применимо к языку луа, ничего нового не поменялось, добавилось много нового функционала. Пример работ по новому функционалу можно найти в моих ресурса (Есть в моём профиле). На момент это поста я тут самый живой, может и не самый умный, но что-то да знаю, и мне это тоже всё интересно. Да до сих пор. Последний ресурс по луа от меня вышел 5 сентября (4 дня назад)
Это как доказательство.
Если ответить в лоб на твои вопросы и ты никогда не изучал варик то:
где читать что значат те или иные функции и т.д
Открываем 126 варик и тыкаем триггеры на русском - самый просто способ (но лучше на английском)
Если нет то дайте какой-то способ как изучать это
Форма вопросов и ответов QA xgm, по факту можно загуглить любую функцию и до вас уже спрашивали 90% вероятность, что она делает, какие нюансы есть и как пользоваться.
Если не нашли ответа, задавайте вопрос либо здесь либо в дискорде
Но на сайте на столько много инфы, что даже самый последний "дюбиль" (простите), способен сделать свою доту, было бы желание
Коммон Джей и Коммону Луа ничем не отличаются
Поэтому хватит любого, чтобы смотреть нативки
Если вернуться к сабжу
Например, <<юнит получил урон - урон нанесён способностью "Волна Силы", тогда делай что-то там, что тебе нужно">>, возможно ли такое
Луа тут ничем не поможет опять таки, это делает так же как и на джасе, но с условием и нюансами
Кое как это можно сделать, потому что можно в событии урона прочитать типа урона, и если у юнита нет других способностей с этим типом урона, какой конкретно тип урона у волны силы я не помню, но можно легко определить. И в принципе желаемое сделать возможно, но так делать не надо, правильнее сделать триггерную волну силы
Тогда у нас и в момент попадания можно будет отследить, и длину поменять и изогнуть волну и урон от статов нанести, да что угодно, но опять таки.. это всё делается точно также как и на джасе, новых алгоритмов нет.
Есть новое событие, на юнит получает урон, но тут и оно даже не нужно если урон наносить триггерно
---@param whichUnit unit
---@param target widget
---@param amount real
---@param attack boolean
---@param ranged boolean
---@param attackType attacktype
---@param damageType damagetype
---@param weaponType weapontype
---@return boolean
function UnitDamageTarget(whichUnit, target, amount, attack, ranged, attackType, damageType, weaponType) end -- (native)
Функция возвращает истину, если урон был нанесён... она же условие она же нанесение урона она же событие
Функция волна сил()
if UnitDamageTarget(Unit, Enemy, amount, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS) then
print("УРОН НАНЕСЁН С ПОМОЩЬЮ ВОЛЫ СИЛЫ")
end
end
А кто это говорил? Да, такое написано в статьях, но как это проверяли?
Это снижало нагрузку в 2003 когда у всех были селероны 1.7 возможно это позволяло повысить производительность % на 20, что в реалиях нынешнего железа = 0.002 % если не меньше
Нашёл решение для тебя.
Пол-ночи провозился, но нашёл. почему-то это стало делом чести - открыть сию карту в редакторе
В общем, берёшь архив из аттача и тупо суёшь папку UI в корень варкрафта. После этого карта будет открываться любым вариантом редактора - как JNGP (любым), так и (даже!) стандартным.
Важно: локальные файлы должны быть разрешены.
Только там такой срач и дичь, что лучше реально своими руками с нуля писать...
какое отношение этот пункт имеет к проблеме?
короче покопался в wtg файле
у тебя раньше использовался какой то странный файл гуишных функций
скорее всего он лежал либо в папке с вар3, либо в папке с джнгп и потом его удалили
одна из функций (возвращает булеан) вообще была представлена как набор пробелов
узнавать что это была за функция мне было лень поэтому я её заменил на false (использовалась в условии)
это было в триггере ctart, так что поправь там условие
так же заменил IssueImmediateOrderBJ на IssueImmediateOrder
вот открываемая в редакторе карта
Если у вас есть аккаунт в соц. сети ВКонтакте, тогда вы можете объединить его с вашим аккаунтом на XGM. Это делается на этой страничке xgm.guru/auth-settings
или могу вручную сбросить пароль отправив новый на почту указанную в профиле.
Сфера замедления с засунутой туда огненной стрелой, кароче пассивка вивера из доты (смотри опендоту), либо мемхак (там есть функция Simulate attack instance и TrowSpell, так же ResetAttackCooldown) но мемхак сложная наработка, если вы не знаете jass и не любите читать длинные, нудные инструкции то эта наработка явно не для вас.
Для этого есть событие получения урона, получил урон + есть бафф от стрелы, тогда делаешь твои дейсвтия. Это придумано 100500 лет назад, в 1.31 стало только удобнее .
Wyett, ты можешь добавлять подобные этим:
function ... takes ... returns ...
Код
endfunction
Резака купить можно, но это будет абсолютно не похоже на покупку дирижабля.
quq_CCCP, извлёк. Теперь мне засунуть этот код в копию этой карты, которую в редакторе кампаний добавить в кампанию и сохранить? Вроде как получается то же самое, как при сохранении карты в JNGP отдельно, а потом её добавлении в кампанию.
P. S. Цвета персонажей слетели при этом способе, а они очень важны. Хотя так код и правда работает.
P. P. S. Сначала карта запускалась, но цвета юнитов менялись, код срабатывал. Потом решил повторить это(замену файла war3map.j), внеся изменения в простые триггеры, но карта уже не запускалась.
P. P. P. S. Короче, разобрался в причине того, что карта не запускалась, я её с рабочего стола загружал и сохранял. Видимо из-за русских символов в пути не получалось. Если карта лежит в папке maps, то нормально. Но проблема с другими цветами персонажей, а точнее красным цветом, так и осталась. В итоге решил не мучиться, а сделать всё обычными триггерами.
Кстати, из триггера убрали элементы vjass, код стал таким, но всё равно не сохранялся в кампании:
globals
timer alp_t = CreateTimer()
integer alp_m = 0
unit array alp_a
boolean array alp_f
integer array alp_alpha
real array alp_speed
real array alp_time
endglobals
function TimeUnitAlpha takes nothing returns nothing
local integer i = 0
loop
set i = i + 1
exitwhen i>alp_m
if GetWidgetLife(alp_a[i])>0.405 and alp_time[i]>0 then
if alp_f[i] then
set alp_alpha[i] = alp_alpha[i] + R2I(alp_speed[i])
else
set alp_alpha[i] = alp_alpha[i] - R2I(alp_speed[i])
endif
call SetUnitVertexColor(alp_a[i],255,255,255,alp_alpha[i])
set alp_time[i] = alp_time[i] - 0.05
else
if alp_f[i] then
call SetUnitVertexColor(alp_a[i],255,255,255,255)
endif
set alp_a[i] = alp_a[alp_m]
set alp_f[i] = alp_f[alp_m]
set alp_time[i] = alp_time[alp_m]
set alp_alpha[i] = alp_alpha[alp_m]
set alp_speed[i] = alp_speed[alp_m]
set alp_m = alp_m - 1
if alp_m==0 then
call PauseTimer(alp_t)
endif
endif
endloop
endfunction
Принимает : (Юнита, Длительность , начальная прозрачность , макс. прозрачности за время , Появится/Исчезнуть )
call AddUnitAlpha(Caster,3,0,255,true) = Появится за 3 секунды
call AddUnitAlpha(Caster,3,255,255,false) = Исчезнет за 3 секунды
function AddUnitAlpha takes unit A,real TIMES,integer ALPHA,integer MAX_ALPHA,boolean F returns nothing
set alp_m = alp_m + 1
set alp_a[alp_m] = A
set alp_f[alp_m] = F
set alp_time[alp_m] = TIMES+0.10
set alp_alpha[alp_m] = ALPHA
set alp_speed[alp_m] = MAX_ALPHA/TIMES*0.05
if alp_m==1 then
call TimerStart(alp_t,0.05,true,function TimeUnitAlpha)
endif
endfunction
Если есть тимвиверные лаги, есть ещё миллион других программ для удалёнки, AnyDesk или Spleshtop (вроде платный, но это не проблема)
Но я делал по другому: по впн цеплялся домой на роутер, на домашнем компе на Win 10 pro создавал второго пользователя (в принципе можно и создавать и не патчить десятку под сервер), подключался через удалённый рабочий стол к домашнему компу и в принципе всё, vpn соедение на убунте хз где, но remmina для удалённого рабочего стола есть точно, ну или параллелс десктоп в режиме rdp.
Если ничего не понятно, то могу подробно расписать что и как я делал
Так же никто не отменял поставить варик на любой комп в рабочей сети (если есть доступ на такие пакости), хоть на компьютер бухглатера и в режиме второго пользователя сидеть по RDP на этом компе, WE вроде сильно не грузит =)
Ethernet:
masias3:
> bOrissko:
> > Создай переменную типа integer, отлавливай применение способности и далее присваивай переменной integer рандомное число 1 до 3, ну а дальше если integer ровно 1, то создать такого юнита и т.д.
> > P.s: так же не забудь отключить "Фиксированный разброс" в Параметрах.
> Не помогло.
Триггер в студию
Почти правильно, только к переменной MercRandom присваивается случайное число только 1 раз при загрузке карты и больше не изменяется. Если у тебя только два триггера, которые на данный момент работают, то если при загрузке карты MercRandom выпало число 2 или 3, то второй триггер работать, конечно же, не будет.
Как вариант добавить в конец каждого триггера присваивание к переменной случайное число, т.е. при кажой покупке будет задаваться новое число от 1 до 3
На самом деле все можно упростить и использовать массив
и все завернуть в 1 триггер
Я попробовал в каждый запихнуть не получилось
Триггер с инициализацией не надо было отключать, так как по умолчанию значение переменной 0, а не 1-3
Без твоих условий, но думаю все понятно.
Да, можно триггерно добавлять и убирать существ на рынок. Нужно два триггера, первый будет через определённое время добавлять в продажу юнитов и через какое-то убирать, второй будет убирать юнита при покупке. Вроде бы в категории Нейтральное здание нужные действия.
» WarCraft 3 / Иконка знака вопроса?
» WarCraft 3 / Не работает способность
» WarCraft 3 / Как сделать улучшение для конкретного юнита?
» WarCraft 3 / Проблема с картой
» WarCraft 3 / Как убрать дождь
» WarCraft 3 / Как поставить стоимость юнита в мане
» WarCraft 3 / Отслеживание
» WarCraft 3 / Не открываются триггеры
» WarCraft 3 / Просмотр реплеев
» WarCraft 3 / Как сделать чтобы триггер не повторялся?
» WarCraft 3 / Лаги в карте
» WarCraft 3 / Как изменить тип атаки героя который купил предмет?
» WarCraft 3 / Вопрос по редактору карт
» WarCraft 3 / Лагерь наемников
» WarCraft 3 / Текстуры
» WarCraft 3 / Создание mpq
» WarCraft 3 / Редактор карт для Reforged?
» WarCraft 3 / Vscode
» WarCraft 3 / Карта открывается пустой
» WarCraft 3 / Как сделать воскрешение героя для нескольких игроков
» Администрация XGM / Восстановление доступа к аккаунту
» WarCraft 3 / Авто атака.
» WarCraft 3 / Не запускается карта на World Editor
» WarCraft 3 / Проблема с иконкой.
» WarCraft 3 / Лагерь наемников